Skip to content

Drop focal support - #8843

Open
stackunderfl0w wants to merge 2 commits into
eksctl-io:mainfrom
stackunderfl0w:drop-focal-support
Open

Drop focal support#8843
stackunderfl0w wants to merge 2 commits into
eksctl-io:mainfrom
stackunderfl0w:drop-focal-support

Conversation

@stackunderfl0w

Copy link
Copy Markdown

Ubuntu 20.04 LTS (Focal Fossa) reached the end of standard security maintenance on May 31, 2025.

Description

This PR supersedes #8470, #8597, and #8650, which were previously marked as stale and automatically closed.

The latest EKS version supported by Ubuntu 20.04 and Ubuntu Pro 20.04 EKS images was Kubernetes 1.29. EKS 1.29 has since reached the end of both standard and extended support.

Ubuntu Pro extends security maintenance for the operating system, but it does not extend the Amazon EKS support lifecycle for Kubernetes 1.29. Therefore, there are no currently supported EKS versions that use these image families.

Remove the Ubuntu2004 and UbuntuPro2004 AMI families from eksctl. Users should migrate to a newer supported Ubuntu release and EKS version.

Checklist

  • Added tests that cover your change (if possible)
  • Added/modified documentation as required (such as the README.md, or the userdocs directory)
  • Manually tested
  • Made sure the title of the PR is a good description that can go into the release notes
  • (Core team) Added labels for change area (e.g. area/nodegroup) and kind (e.g. kind/improvement)

BONUS POINTS checklist: complete for good vibes and maybe prizes?! 🤯

  • Backfilled missing tests for code in same general area 🎉
  • Refactored something and made the world a better place 🌟

JessicaJang and others added 2 commits August 26, 2026 00:39
Ubuntu 20.04 (Focal Fossa) reached end-of-life
on May 31, 2025.

Discontinue support for this EOL release.
@github-actions

Copy link
Copy Markdown
Contributor

Hello stackunderfl0w 👋 Thank you for opening a Pull Request in eksctl project. The team will review the Pull Request and aim to respond within 1-10 business days. Meanwhile, please read about the Contribution and Code of Conduct guidelines here. You can find out more information about eksctl on our website

@gustavodiaz7722 gustavodiaz7722 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 AI-generated review. Authored by an AI agent. Findings were validated locally as described below; suggested changes were compiled and tested before posting.

Assessment

Correct and self-consistent. No blocking issues found.

The removed families are unreachable in practice: eksctl's minimum supported EKS version is now 1.31, while 20.04 SSM resolution was bounded to >= 1.21, < 1.29. Confirmed against AWS SSM in us-west-2 — no /aws/service/canonical/ubuntu/eks{,-pro}/20.04/<version>/… parameter exists for any supported version. The auto-resolver fallback matches nothing either, since no ubuntu-eks/k8s_1.31/images/*20.04-* images are published.

Other checks that came back clean: schema.json regenerates with no diff; the deleted integration/tests/custom_ami/testdata/ubuntu-pro-2004.yaml was already orphaned on main (no test read it); no stale Ubuntu2004/UbuntuPro2004/20.04/focal references remain outside historical release notes; the Ubuntu2404/Ubuntu2604 resolution paths are separate switch cases and are untouched.

This also fixes two pre-existing copy/paste errors in gpu_validation_test.go, where the entries labelled Ubuntu2204 and UbuntuPro2204 both asserted against NodeImageFamilyUbuntu2004.

Validation performed (commit faae988f on 99984adb, Go 1.26.5)
  • go build ./... — pass
  • go test ./pkg/... ./cmd/... — pass across 85 packages. pkg/iam/oidc and pkg/karpenter/providers/helm fail only for environmental reasons (missing cfssl binary, no network egress to public.ecr.aws)
  • CGO_ENABLED=0 go test -tags=release on affected packages — pass
  • go vet -tags integration ./integration/... — pass
  • make generate-schema — no diff
  • make binary, then dry-run across both nodeGroups and managedNodeGroups plus the --node-ami-family flag: Ubuntu2004 and UbuntuPro2004 rejected with a clear error; Ubuntu2204, UbuntuPro2204 and Ubuntu2404 accepted

Non-blocking: two test entries deleted rather than retargeted

Both cover behaviour that still applies to 22.04, so the lost coverage looks incidental.

1. pkg/apis/eksctl.io/v1alpha5/gpu_validation_test.go — the GPU-drivers-warning DescribeTable is now Windows-only. The entry mislabelled "Windows without GPU instances" (it actually used Ubuntu2004) was the only coverage of the explicit-zero branch in validation.go:

if ng.InstanceSelector != nil && !ng.InstanceSelector.IsZero() &&
    (ng.InstanceSelector.GPUs == nil || *ng.InstanceSelector.GPUs != 0) {

GPUs: newInt(0) now appears nowhere in the repository, leaving that guard untested. The enclosing condition still excludes only AL2, AL2023 and Bottlerocket, so Ubuntu remains in scope.

Suggested, inserted before Entry("Windows with explicit GPU instance", …):

		Entry("Ubuntu without GPU instances", gpuInstanceEntry{
			amiFamily: api.NodeImageFamilyUbuntu2204,
			instanceSelector: &api.InstanceSelector{
				VCPUs: 4,
				GPUs:  newInt(0),
			},
		}),
		Entry("Ubuntu with implicit GPU instance", gpuInstanceEntry{
			amiFamily: api.NodeImageFamilyUbuntu2204,
			instanceSelector: &api.InstanceSelector{
				VCPUs: 4,
				GPUs:  newInt(2),
			},
			expectWarning: true,
		}),

2. integration/tests/managed/managed_nodegroup_test.go — the Managed CLI features table no longer has any Ubuntu entry. Retargeting rather than removing:

		Entry("Ubuntu with dry-run", managedCLIEntry{
			createArgs: []string{
				"--node-ami-family=Ubuntu2204",
				"--dry-run",
			},
		}),

Both suggestions were applied locally and verified: gofmt clean, go vet -tags integration clean, and pkg/apis/eksctl.io/v1alpha5 runs 545 of 545 specs green with both restored entries executing.

Out of scope for this PR

validateVersionForUbuntu bounds Ubuntu2204/UbuntuPro2204 at >= 1.29 with no upper bound, but published images stop earlier:

Ubuntu 22.04 (eks):  1.29 1.30 1.31 1.32
Ubuntu 24.04 (eks):  1.31 1.32 1.33 1.34 1.35 1.36

--node-ami-family=Ubuntu2204 on EKS 1.33+ therefore passes validation and then fails at resolution with a wrapped SDK error. Pre-existing, and the same failure mode this PR removes for 20.04 — noted only because 22.04 is where this change redirects users. Not a request against this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants